package d13_interger;

public class Test {
    public static void main(String[] args) {
        //目标: 认识包装类, 搞清楚他的作用
        int a = 12;

        //1.把基本类型通过包装类包装成对象
        // Integer it1 = new Integer(a)//已经过时了
        Integer it1 = Integer.valueOf(a);//手动包装, 提前缓存了-128-127在一个对象中,只要在这个范围内都是一个对象
        System.out.println(it1);

        //2.自动装箱机制: 基本类型的数据可以直接变成对象赋值给包装类
        Integer it2 = 127;
        Integer it3 = 127;
        String s = it3.toString();
        System.out.println(s+1);//1271
        int i1 = a + it2;
        Integer ite10 = a + it2;

        Integer it4 = 128;
        Integer it5 = 128;
        //可以验证是否为同一个对象
        System.out.println(it2 == it3);//true
        System.out.println(it4 == it4);//false


        //3.自动拆箱机制:包装类的对象可以直接复制给基本数据类型
        int it6 = it3;
        System.out.println(it4);

        System.out.println("-------------Java为包装类提供了功能-----------------");

        //1.功能一:包装类可以把基本类型的数据转成字符串.
        int a1 = 23;
        String rs = Integer.toString(a1);//"23"
        System.out.println(rs + 1);//231

        Integer i = 23;
        String rs2 = i.toString();//"23"
        System.out.println(rs2 + 1);

        //直接用""进行相加更快
        int a2 = 23;
        String rs3 = a2 + "";//这样还简单点
        System.out.println(rs3 + 1);

        //2.功能二:把字符串值转换成对象的基本数据类型(很有用!)-------->从前端传过来的数据基本都是字符串
        String ageStr = "23";
//        int age = Integer.parseInt(ageStr);
        int age = Integer.valueOf(ageStr);//更好
        System.out.println(age + 1);//24

        String scoreStr = "99.5";
        double score = Double.parseDouble(scoreStr);
        double score1 = Double.valueOf(scoreStr);//更好
        System.out.println(score + 0.5);
    //3.由于泛型和集合都不支持基本数据类型,应为万物皆对象,英尺包装类在集合和泛型中大量使用而且是必须使用
    }
}
